/* 
 * This program is free software; you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; either version 3 of the License, or 
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
 * for more details.
 * 
 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, write to the Free Software Foundation, Inc., 
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */


#ifndef WISHMASTER_FILTER_H
#define WISHMASTER_FILTER_H

#include <QSharedPointer>
#include <QString>
#include "components/post.h"

namespace Wishmaster
{
	class Filter
	{
	public:
		Filter(const QString& name);
		virtual ~Filter();
		QString name();
		void setName(const QString& name);

		virtual bool check(PostPtr post) = 0;
		virtual bool checkText(const QString& text) = 0;
		virtual QString id() = 0;
		virtual QString serialize() = 0;
		virtual bool deserialize(const QString& s) = 0;
		virtual QSharedPointer<Filter> clone(const QString& name) = 0;

	private:
		QString m_name;
	};

	typedef QSharedPointer<Filter> FilterPtr;
}

#endif

